package slstone.common.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


/*
 *filter>> 매개 jsp화면마다 접근 가능을 체크한다. 세션에서 로그인 사용자 id가 있으면 접근가능하고 없으면 로그인 화면으로 유도한다 
 * 
 */
public class CheckinLoginSession implements Filter 
{

	@Override
	public void destroy()
	{
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
	{
	
		HttpServletRequest req= (HttpServletRequest)request;
		HttpSession session = req.getSession(); //user session 얻기		
		
		String request_uri = req.getRequestURI(); //사용자 요청 URL 확인
				
		//로그인 JSP 화면은 filter에서 제외해야 한다		
		if ("/slstone/jsp/login/login.jsp".equals(request_uri)) 
		{
			chain.doFilter(request, response);			
			return;
		}
		
		//세션에서 사용자 id 가져오기
		String userId =(String)session.getAttribute("userId");
		
		//seesion에 userId가 없으면 로그인 화면으로 유도!
		if(userId==null||"".equals(userId))
		{	
			HttpServletResponse res = (HttpServletResponse)response;
			res.sendRedirect("/slstone/jsp/login/login.action");			
		}
		//로그인 상태라면 JSP 화면 접근가능
		else
		{		
			chain.doFilter(request, response);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException
	{
		
		
	}

}
